#include <bits/stdc++.h>

using namespace std;

// class MyStack
// {
// public:
//     MyStack()
//     {
//     }

//     void push(int x)
//     {
//         que1.push(x);
//         size++;
//     }

//     int pop()
//     {
//         while (size > 1)
//         {
//             size--;
//             que2.push(que1.front());
//             que1.pop();
//         }
//         int num = que1.front();
//         que1.pop();
//         size--;
//         while (!que2.empty())
//         {
//             que1.push(que2.front());
//             que2.pop();
//             size++;
//         }
//         return num;
//     }

//     int top()
//     {
//         int num = this->pop();
//         que1.push(num);
//         return num;
//     }

//     bool empty()
//     {
//         if (que1.empty())
//         {
//             return true;
//         }
//         else
//         {
//             return false;
//         }
//     }

// public:
//     queue<int> que1;
//     queue<int> que2;
//     int size = 0;
// };

class MyStack
{
public:
    MyStack()
    {
    }

    void push(int x)
    {
        que.push(x);
    }

    int pop()
    {
        int size = que.size();
        while (size > 1)
        {
            size--;
            que.push(que.front());
            que.pop();
        }
        int num = que.front();
        que.pop();
        return num;
    }

    int top()
    {
        int num = this->pop();
        que.push(num);
        return num;
    }

    bool empty()
    {
        if (que.empty())
        {
            return true;
        }
        else
        {
            return false;
        }
    }

public:
    queue<int> que;
};

int main()
{
    MyStack myStack;
    myStack.push(1);
    myStack.push(2);
    cout << myStack.top() << endl;   // 返回 2
    cout << myStack.pop() << endl;   // 返回 2
    cout << myStack.empty() << endl; // 返回 False
    return 0;
}